package string_learn;

/**
 * @author yuisama
 * @date 2022/09/21 19:08
 * 关于字符串查找的常用方法
 **/
public class StringFind {
    public static void main(String[] args) {
        String str = "hello world";
        System.out.println(str.contains("world"));
        System.out.println(str.contains("or"));
        System.out.println(str.contains("r"));
        // 大小写敏感
        System.out.println(str.contains("World"));
//        // 2
//        System.out.println(str.indexOf('l'));
//        // 9，从索引5开始第一个出现l的位置
//        System.out.println(str.indexOf('l',5));
//        // 2
//        System.out.println(str.indexOf("llo"));
//        // 9
//        System.out.println(str.lastIndexOf('l'));



//        // 调用这个方法一定要注意越界的问题
//        // 所有和索引相关的方法调用一定要注意是否越界的问题
//        char c = str.charAt(4);
//        System.out.println(c);
//        // 越界错误
//        System.out.println(str.charAt(20));
//        System.out.println(isDigit("1243a"));
//        System.out.println(isDigit("1243"));
//        System.out.println(isDigit("a1243"));
//        System.out.println(isDigit(""));
//        System.out.println(isDigit(null));
    }
    // 判断str是否由纯数字组成！
    // "12345" -> 数字型字符串
    // "123a4哈哈" -> false
    // 写这种判断型的方法，就是在找反例
    // 这个方法非常之重要！
    public static boolean isDigit(String str) {
        // 1.边界条件，字符串为空null 或内容为空
        if (str == null || str.length() == 0) {
            return false;
        }
        // 2.需要将字符串拆分为一个个的字符来依次判断
        for (int i = 0; i < str.length(); i++) {
            char c = str.charAt(i);
            // 如何知道c是一个数字型的字符？
            // 'a'
//            if (c < '0' || c > '9') {
//                // 一定不是数字字符！,找到反例！
//                return false;
//            }
            // 判断c是否是数字字符
            if (!Character.isDigit(c)) {
                return false;
            }
        }
        // 走完整个循环，还没找到反例，则str一定是纯数字字符串！
        return true;
    }

}